#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "tp2.h"

/*o tamanho das sk tao td igual...
  pra facilitar um pouco(Muito!)..
  se precisar fikar cada sk com seu tamanho certo fudeu!=D
 */

  void fileseek(FILE *arq, int steps, int tamsk){
    if(tamsk==200){
      fseek(arq,steps*450,0);
    }
    if(tamsk==100){
      fseek(arq,(steps*450)+200,0);
    }
    if(tamsk==125){
      fseek(arq,(steps*450)+300,0);
    }
    if(tamsk==4){
      fseek(arq,(steps*450)+425,0);
    }
  }

  PK* CarregaSKDaBase(int *nu,FILE *base,int tamsk){
    int i=0,a=0,b=0,nsk=0,nlista=0, a1=0;
    char buffer[200],verifica[200];
    PK *listask,*found,aux;
    FILE *listainvertida;
    listainvertida=fopen("listatitulo.dat","a+");
    listask=(PK*)malloc(20*sizeof(PK));
    while(fgets(buffer,tamsk,base)!=NULL){
      while(b<200){
        buffer[b]=' ';
        b++;
      }
      b=0;
      fileseek(base,i,tamsk);
      fread(buffer,1,tamsk,base);
      while((buffer[a]!=' ')&&(a<tamsk)){
	    while((buffer[a]!=' ')&&(a<tamsk)){
          verifica[a1]=buffer[a];
          printf("teste do buffer %c\n",buffer[a]);
          a++;
          a1++;
        }
        b=a1;
        a++;
        a1=0;
        while(b<200){
	      verifica[b]=' ';
          b++;
        }
        
        if(nsk>0){
	      found=BSearch(listask,verifica,0,nsk-1);
	    }
        else{
          found=NULL;
        }
        if(found==NULL){
	      for(b=0;b<200;b++){
	        aux.titulo[b]=buffer[b];
          }
          aux.NRR=-1;
          printf("teste do aux null %d\n",aux.NRR);
          fseek(listainvertida,nlista*204,0);
          fwrite(&aux,1,sizeof(PK),listainvertida);
	      nlista++;
          nsk++;         
          printf("teste do nlista null %d\n",nlista);
          printf("teste do nsk null %d\n",nsk);
          AdicionaPK(listask,verifica,nsk);
	    }
	    else{
	      for(b=0;b<200;b++){
	        aux.titulo[b]=buffer[b];
          }
	    aux.NRR=found->NRR;
        printf("teste do aux nao null %d\n",aux.NRR);
	    fseek(listainvertida,nlista*204,0);
 	    fwrite(&aux,1,sizeof(PK),listainvertida);
        found->NRR=nlista;
	    nlista++;
        printf("teste do nlista n null %d\n",nlista);
        printf("teste do nsk n null %d\n",nsk);
  	  }
    }
    b=0;
    i++;
    a=0;
  }
          printf("teste do nsk final %d\n",nsk);
  *nu=nsk;
  fclose(listainvertida);
  return listask;
}
